package com.itany.corejava.code14_lambda;

import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

/**
 * @author MissChen
 * @date 2024年03月25日 14:46
 */
public class Test05_函数型接口 {
    public static void main(String[] args) {
        List<Integer> list= Arrays.asList(1,2,3,4,5,8,9);
        // Integer size=testFunction(new Function<List<Integer>, Integer>() {
        //     @Override
        //     public Integer apply(List<Integer> integers) {
        //         return list.size();
        //     }
        // },list);
        // System.out.println(size);

        //Lambda表达方式
        Integer size=testFunction(integers -> list.size(),list);
        System.out.println(size);

    }


    /**
     * 函数型接口Function<T,R>,方法： R apply(T t);
     * 接口泛型类型与方法参数、返回值相关
     * 第一个泛型类型与方法的参数类型一致，第二个泛型类型与方法的返回值类型一致
     * @param function
     * @param list
     * @return
     */
    public static Integer testFunction(Function<List<Integer>,Integer> function,List<Integer> list){
        return function.apply(list);
    }
}
